package ee.ttu.validator;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import ee.ttu.frontend.service.WishService;
import ee.ttu.model.Ettepanek;
import ee.ttu.model.Kasutaja;
import ee.ttu.model.Klassifikaator;
import ee.ttu.model.Oppejoud;
import ee.ttu.repository.EttepanekRepository;
import ee.ttu.repository.KasutajaRepository;
import ee.ttu.repository.KlassifikaatorRepository;


public class WishValidator {
	
	

	


    final static Logger logger = Logger.getLogger(WishValidator.class);
    
	/**
	 * Soovi aktsepteerimise valideerimine
	 * 
	 * @param errors
	 * @param ettepanekuStaatusId
	 * @return
	 */
		public static List<String> validateAcceptWish(List<String> errors, String ettepanekuStaatusKood){
			
			 if (ettepanekuStaatusKood.equals("S2")){
				 errors.add("Can't accept not active wish!");
			 }
			 else if (ettepanekuStaatusKood.equals("S3")){
				 errors.add("Wish is already accepted!");
			 }
			
			 
			 return errors;
			
		}
		

		/**
		 * Oppejou valideerimine
		 * 
		 * @param errors
		 * @param kasutaja
		 * @return
		 */
		public static List<String> validateWishTeacher(List<String> errors, Kasutaja kasutaja,Ettepanek ettepanek){
			

			for(int i = 0;i<ettepanek.getEttepanekusOsalejad().size();i++){
				if(ettepanek.getEttepanekusOsalejad().get(i).getRollEttepanekusTyyp().getKood().equals("RE1")==true && ettepanek.getEttepanekusOsalejad().get(i).getSeotudKasutaja().equals(kasutaja)){
					return errors;
				}
			}
			
			errors.add("You dont have permission!");
			
		return errors;
		}
		
		public static List<String> validateWishCreator(List<String> errors, Kasutaja kasutaja,Ettepanek ettepanek){
			
			
			for(int i = 0;i<ettepanek.getEttepanekusOsalejad().size();i++){
			
				if(ettepanek.getEttepanekusOsalejad().get(i).getRollEttepanekusTyyp().getKood().equals("RE2")==true && ettepanek.getEttepanekusOsalejad().get(i).getSeotudKasutaja().equals(kasutaja)==true){
					return errors;
				}
			}
			
			errors.add("You dont have permission!");
			
		return errors;
		}
		
		
		
		/**
		 * Oppejoukoormuse valideerimine
		 * 
		 * @param errors
		 * @param oppejoud
		 * @return
		 */
	public static List<String> validateOppejoudKoormus(List<String> errors, Oppejoud oppejoud){
			
			if(oppejoud.getKoormus() >= 10){
				errors.add("Teacher's work amount is full");
			}
			
			
		return errors;
		}
	
		/**
		 * Soovi tagasilukkamise valideerimine
		 * 
		 * @param errors
		 * @param ettepanekuStaatusId
		 * @return
		 */
	
		public static List<String> validateDeclinedWish(List<String> errors, String ettepanekuStaatusKood){
			
			
			if (ettepanekuStaatusKood.equals("S2")){
				 errors.add("Can't accept inactive wish!");
			 }
			 else if (ettepanekuStaatusKood.equals("S4")){
				 errors.add("Wish is already declined!");
			 }
			return errors;
		}
		/**
		 * Soovi deaktiveerimise valideerimine
		 * 
		 * @param errors
		 * @param ettepanekuStaatusId
		 * @return
		 */
		public static List<String> validateDeactivatedWish(List<String> errors, String ettepanekuStaatusKood){
			
			if (ettepanekuStaatusKood.equals("S2")){
				 errors.add("Can't decativate inactive wish!");
			 }
			else if (ettepanekuStaatusKood.equals("S4")){
				 errors.add("Cant deactivate declined wish!");
			 }
			 
			return errors;
		}
		/**
		 * Soovi aktiveerimise valideerimine
		 * 
		 * @param errors
		 * @param ettepanekuStaatusId
		 * @return
		 */
		public static List<String> validateActivatedWish(List<String> errors, String ettepanekuStaatusKood){
			
			if (ettepanekuStaatusKood.equals("S1")){
				 errors.add("Wish is already activated!");
			 }
			else if (ettepanekuStaatusKood.equals("S4")){
				 errors.add("Cant activate declined wish!");
			 }
			 return errors;
		}
		
	
		
		public static List<String> validateEttepanek(List<String> errors, Klassifikaator topic,Kasutaja student,Kasutaja teacher){
			
			
			if (topic == null){
				 errors.add("Topic must not be empty!");
			}
			if (student == null){
				 errors.add("Student must be set!");
			}
			else if (student.getKasutajaTyyp().getKood().equals("K2")!= true){
				errors.add("User is not a student!");
			}
			if (teacher == null){
				 errors.add("Student must be set!");
			}
			else if (teacher.getKasutajaTyyp().getKood().equals("K1")!= true){
				errors.add("User is not a teacher!");
			}
			
			
			 return errors;
		}
		
		
		
		

}
